namespace gUSBamp 
{
#ifdef HAVE_GTEC_USB_LIBRARY
#pragma once
#include "gUSBamp.h"
#pragma comment(lib,"gUSBamp.lib")

//Data acquisition
typedef HANDLE (__stdcall*LibGT_OpenDevice )(int);
typedef HANDLE (__stdcall*LibGT_OpenDeviceEx )(LPSTR); //Connect with serial number printed on the box
typedef  BOOL  (__stdcall*LibGT_CloseDevice)(HANDLE* );
typedef  BOOL  (__stdcall*LibGT_GetData)(HANDLE ,BYTE*,DWORD,OVERLAPPED*);
typedef  BOOL  (__stdcall*LibGT_SetBufferSize)(HANDLE, WORD );
typedef  BOOL  (__stdcall*LibGT_SetSampleRate)(HANDLE, WORD );
typedef  BOOL  (__stdcall*LibGT_Start)(HANDLE ); //Start Acq
typedef  BOOL  (__stdcall*LibGT_Stop)(HANDLE ); //Stop Acq
typedef  BOOL  (__stdcall*LibGT_SetChannels)(HANDLE, UCHAR*, UCHAR );
typedef  BOOL  (__stdcall*LibGT_ResetTransfer)(HANDLE );
//Digital I/O
typedef  BOOL  (__stdcall*LibGT_SetDigitalOut)(HANDLE, UCHAR, UCHAR );
typedef  BOOL  (__stdcall*LibGT_SetDigitalOutEx)(HANDLE, DigitalOUT );
typedef  BOOL  (__stdcall*LibGT_GetDigitalIO)(HANDLE, PDigitalIO );
typedef  BOOL  (__stdcall*LibGT_GetDigitalOut)(HANDLE, PDigitalOUT );
typedef  BOOL  (__stdcall*LibGT_EnableTriggerLine)(HANDLE, bool );
//Filter
typedef  BOOL  (__stdcall*LibGT_GetFilterSpec)(_FILT*); 
typedef  BOOL  (__stdcall*LibGT_GetNumberOfFilter)(int*); 
typedef  BOOL  (__stdcall*LibGT_SetBandPass)(HANDLE, UCHAR, int); 
typedef  BOOL  (__stdcall*LibGT_GetNotchSpec)(_FILT*); 
typedef  BOOL  (__stdcall*LibGT_GetNumberOfNotch)(int*); 
typedef  BOOL  (__stdcall*LibGT_SetNotch)(HANDLE, UCHAR, int);
//Mode
typedef  BOOL  (__stdcall*LibGT_SetMode)(HANDLE, UCHAR);
typedef  BOOL  (__stdcall*LibGT_GetMode)(HANDLE, UCHAR*);
typedef  BOOL  (__stdcall*LibGT_SetGround)(HANDLE, GND);
typedef  BOOL  (__stdcall*LibGT_GetGround)(HANDLE, GND*);
typedef  BOOL  (__stdcall*LibGT_SetReference)(HANDLE, REF);
typedef  BOOL  (__stdcall*LibGT_GetReference)(HANDLE, REF*);
//Bipolar
typedef  BOOL  (__stdcall*LibGT_SetBipolar)(HANDLE, CHANNEL);
//DRL
typedef  BOOL  (__stdcall*LibGT_SetDRLChannel)(HANDLE, CHANNEL);
//Short Cut
typedef  BOOL  (__stdcall*LibGT_EnableSC)(HANDLE, BOOL);
//Synchronization 
typedef  BOOL  (__stdcall*LibGT_SetSlave)(HANDLE, BOOL);
//Calibration / DRL 
typedef  BOOL  (__stdcall*LibGT_SetDAC)(HANDLE, DAC); 
typedef  BOOL  (__stdcall*LibGT_SetScale)(HANDLE, PSCALE); 
typedef  BOOL  (__stdcall*LibGT_GetScale)(HANDLE, PSCALE); 
typedef  BOOL  (__stdcall*LibGT_Calibrate)(HANDLE, PSCALE);
//Error handling 
typedef  BOOL  (__stdcall*LibGT_GetLastError)(WORD*, char*);
//General 
typedef  BOOL  (__stdcall*LibGT_GetDriverVersion)(void);
typedef  BOOL  (__stdcall*LibGT_GetHWVersion)(HANDLE);
typedef  BOOL  (__stdcall*LibGT_GetSerial)(HANDLE, LPSTR, UINT);
typedef  BOOL  (__stdcall*LibGT_GetImpedance)(HANDLE, UCHAR, double*);
#endif
}